package main

import (
	"log"
	"lsgfish/server/internal/config"
	"lsgfish/server/internal/router"
	"lsgfish/server/internal/tool"
	"lsgfish/server/pkg/gcode"
)

// @title           System Module Server API
// @version         1.0
// @description     中后台系统管理模块API文档
// @termsOfService  http://swagger.io/terms/

// @contact.name   API Support
// @contact.url    https://gitee.com/lets-go-fishing/system-module-server
// @contact.email  support@1113237401@qq.com

// @license.name  Apache 2.0
// @license.url   http://www.apache.org/licenses/LICENSE-2.0.html

// @host      localhost:61997
// @BasePath  /v1

// @securityDefinitions.apikey BearerAuth
// @in header
// @name Authorization
// @description 请求头需要添加Bearer Token，如：Bearer xxxxx
func main() {
	// 1. 加载配置
	if err := config.Load(); err != nil {
		log.Fatal("加载配置失败:", err)
	}

	// 3. 初始化Redis
	if err := tool.InitRedis(); err != nil {
		log.Fatal("初始化Redis失败:", err)
	}

	// 2. 初始化数据库
	if err := tool.InitDB(); err != nil {
		log.Fatal("初始化数据库失败:", err)
	}

	// 4. 初始化代码生成器配置
	configPaths := []string{
		".",
		"./internal/config",
		"../internal/config",
		"../../internal/config",
	}

	configData, foundPath, err := tool.FindAndReadConfig("conf", "yaml", configPaths)
	if err != nil {
		log.Printf("找不到配置文件: %v，使用默认配置", err)
	} else {
		log.Printf("已成功加载配置文件: %s", foundPath)
		// 直接传递配置内容给gcode
		gcode.InitConfigFromContent(configData)
	}

	// 5. 启动HTTP服务
	if err := router.Run(); err != nil {
		log.Fatal("启动服务失败:", err)
	}
}
